//package com.sduept.nwld.dataserver.manager.fault;
//
//import java.io.FileInputStream;
//import java.io.FileNotFoundException;
//import java.io.IOException;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.HashSet;
//import java.util.List;
//import java.util.Map;
//import java.util.Set;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import org.apache.commons.lang3.StringUtils;
//import org.apache.log4j.Logger;
//import org.joda.time.DateTime;
//
//import com.sduept.core.dao.SuperDAO;
//import com.sduept.nwld.dataserver.manager.cim.CimManager;
//import com.sduept.nwld.dataserver.model.edata.cim.ACLineSegment;
//import com.sduept.nwld.dataserver.model.edata.cim.FaultRecord;
//import com.sduept.nwld.dataserver.util.CimUtils;
//import com.sduept.utils.DateUtil;
//import com.sduept.nwld.dataserver.util.ExcelUtil;
//
//@Service
//public class FaultImportManager {
//	@Autowired
//	private SuperDAO dao;
//	@Autowired
//	private CimManager cm;
//	
//	private Logger log=Logger.getLogger(this.getClass());
//	
//	private List<ACLineSegment> getaclines(){
//		//return cm.getAcLineSegmentsBystandVoltagelevel500();
//		return dao.findByCondition(ACLineSegment.class,"standVoltagelevel=?" , (float)220);
//	}
//	public  void parserUpdateAndSave(String filePath) throws IOException {
//		Map<String,String>map=new HashMap<String,String>();
//		FileInputStream f=new FileInputStream(filePath);
//		List<List<Object>> list = ExcelUtil.readExcel(f, 1);
//		//outer:
//		for(List<Object> record:list) {
//			if(record.get(13)!=null&&record.get(3)!=null) {
//				map.put(record.get(3).toString()+"-", record.get(13).toString());
//			}
//		}
//		
//		Date start = DateUtil.getDateByString("2017-01-01", DateUtil.pattern_ymd);
//		Date end = DateUtil.getDateByString("2018-02-01", DateUtil.pattern_ymd);
//		List<FaultRecord> condition = dao.findByCondition(FaultRecord.class, " faultTime >? and faultTime <?", start,end);
//		for(FaultRecord record:condition) {
//			for(Map.Entry<String, String> entry : map.entrySet()) {
//				if(record.getEquipment().equals(entry.getKey())||CimUtils.lineNameMatching(record.getEquipment(), entry.getKey(), false)) {
//					String string = map.get(entry.getKey());
//					if(StringUtils.isNotEmpty(string)) {
//						record.setRank(string);
//						break;
//					}
//				}
//			}
//		}
//		log.info("end");
//	}
//	public  void parserAndSave(String filePath) {
//		try {
//			Set<String> ids=new HashSet<>();
//			List<ACLineSegment> aclines=getaclines();
//			FileInputStream f=new FileInputStream(filePath);
//			List<List<Object>> list = ExcelUtil.readExcel(f, 1);
//			for(List<Object> record:list) {
//				if(null==record)continue;
//				if(record.get(1)==null)continue;
//				String s=record.get(1).toString().replaceAll("[^\\d]", "");
//				int vol = Integer.parseInt(s);
//				if(vol>220) {
//					continue;
//				}
//				FaultRecord fault=new FaultRecord();
//				if(record.get(0)!=null)fault.setEtype(record.get(0).toString());
//				if(record.get(1)!=null)fault.setVoltage(vol);
//				if(record.get(2)!=null)fault.setFaultTime(DateUtil.getDateByString(record.get(2).toString(), DateUtil.pattern_ymdhms));
//				if(record.get(3)!=null)fault.setEquipment(record.get(3).toString());
//				if(record.get(4)!=null)fault.setFaultPhase(record.get(4).toString());
//				if(record.get(5)!=null)fault.setFaultType(record.get(5).toString());
//				if(record.get(6)!=null)fault.setFaultReson(record.get(6).toString());
//				if(record.get(7)!=null)fault.setDescription(record.get(7).toString());
//				if(record.get(9)!=null)fault.setRemark(record.get(9).toString());
//				if(record.get(13)!=null)fault.setRank(record.get(13).toString());
//				for(ACLineSegment acline:aclines) {
//					if(CimUtils.lineNameMatching(acline.getName(), record.get(3).toString(), false)) {
//						fault.setEquipment(acline.getName());
//						fault.setEquipment_id(acline.getId());
//						break;
//					}
//				}
//				String regex="#[0-9]{1,}";
//				String find0 = find0(regex,record.get(9).toString());
//				if(StringUtils.isNotEmpty(find0)) {
//					find0=find0.replaceAll("[^\\d]", "");
//					if(StringUtils.isNotEmpty(find0)) {
//						fault.setStartPole(Integer.parseInt(find0));
//					}
//				}
//				String find1 = find1(regex,record.get(9).toString());
//				if(StringUtils.isNotEmpty(find1)) {
//					find1=find1.replaceAll("[^\\d]", "");
//					if(StringUtils.isNotEmpty(find1)) {
//						fault.setEndPole(Integer.parseInt(find1));
//					}
//				}
//				
//				//查询
//				List<FaultRecord> condition=null;
//				if(StringUtils.isNotEmpty(fault.getEquipment_id())) {
//					DateTime dateTime = new DateTime(fault.getFaultTime());
//					Date startTime = dateTime.minusMinutes(1).toDate();
//					Date endTime = dateTime.plusMinutes(1).toDate();
//					condition = dao.findByCondition(FaultRecord.class, "equipment_id=? and faultTime between ? and ? ",fault.getEquipment_id(),startTime,endTime);
//					
//				}else {
//					DateTime dateTime = new DateTime(fault.getFaultTime());
//					Date startTime = dateTime.minusMinutes(1).toDate();
//					Date endTime = dateTime.plusMinutes(1).toDate();
//					condition = dao.findByCondition(FaultRecord.class, "equipment=? and faultTime between ? and ?  ",fault.getEquipment(),startTime,endTime);
//				}
//				if(condition.size()>0) {
//					for(FaultRecord faultRecord:condition) {
//						faultRecord.setRank(fault.getRank());
//					}
//					
//				}
////				if(null==condition||condition.size()==0) {
////					String desc=DateUtil.getStringDate(fault.getFaultTime(), DateUtil.pattern_ymdhms)+"，"+fault.getEquipment()+"发生"+fault.getFaultPhase()
////					+"相故障，"+"故障类型为："+fault.getFaultType();
////					if(record.get(8)!=null) {
////						if("是".equals(record.get(8).toString())) {
////							desc=desc+"，单项重合闸成功。";
////						}else if ("否".equals(record.get(8).toString())) {
////							desc=desc+"，单项重合闸不成功。";
////						}else {
////							desc=desc+"。";
////						}
////					}
////					log.warn("新增"+fault.getEquipment()+desc);
////					fault.setDescription(desc+"\n"+fault.getDescription());
////					FaultRecord create = dao.create(fault, FaultRecord.class);
////					ids.add(create.getId());
////				}else {
////					FaultRecord faultRecord = condition.get(0);
////					log.warn(faultRecord.getEquipment());
////					if(StringUtils.isEmpty(faultRecord.getFaultPhase())) {//相别
////						faultRecord.setFaultPhase(fault.getFaultPhase());
////					}
////					if(StringUtils.isEmpty(faultRecord.getFaultType())) {//类型
////						faultRecord.setFaultType(fault.getFaultType());
////					}
////					if(StringUtils.isEmpty(faultRecord.getRank())) {//调度范围
////						faultRecord.setRank(fault.getRank());
////					}
////					//if(StringUtils.isEmpty(faultRecord.getFaultReson())) {//故障原因
////						faultRecord.setFaultReson(fault.getFaultReson());
////					//}
////					if(null==faultRecord.getStartPole()) {//开始杆塔
////						faultRecord.setStartPole(fault.getStartPole());
////					}
////					if(null==faultRecord.getEndPole()) {//结束杆塔
////						faultRecord.setEndPole(fault.getEndPole());
////					}
////					if(StringUtils.isEmpty(faultRecord.getEquipment_id())) {
////						faultRecord.setEquipment(fault.getEquipment());
////						faultRecord.setEquipment_id(fault.getEquipment_id());
////					}
////					if(ids.contains(faultRecord.getId())) {
////						faultRecord.setDescription(faultRecord.getDescription()+"\n"+fault.getDescription());
////					}else {
////						String desc=DateUtil.getStringDate(faultRecord.getFaultTime(), DateUtil.pattern_ymdhms)+"，"+fault.getEquipment()+"发生"+fault.getFaultPhase()
////						+"相故障，"+"故障类型为："+fault.getFaultType();
////						if(record.get(8)!=null) {
////							if("是".equals(record.get(8).toString())) {
////								desc=desc+"，单项重合闸成功。";
////							}else if ("否".equals(record.get(8).toString())) {
////								desc=desc+"，单项重合闸不成功。";
////							}else {
////								desc=desc+"。";
////							}
////						}
////						faultRecord.setDescription(desc+"\n"+fault.getDescription());
////						ids.add(faultRecord.getId());
////					}
////				}
//			}
//		} catch (FileNotFoundException e) {
//			e.printStackTrace();
//		} catch (IOException e) {
//			e.printStackTrace();
//		}
//	}
//	
//private static String find1(String regex,String str){
//	 Pattern p = Pattern.compile(regex);
//    Matcher m = p.matcher(str);
//    if (m.find()) {
//    	if(m.groupCount()>1) {
//    		return m.group(1);
//    	}
//    } 
//    return "";
//}
//private static String find0(String regex,String str){
//	 Pattern p = Pattern.compile(regex);
//    Matcher m = p.matcher(str);
//    while (m.find()) {
//       return m.group(0);
//    } 
//    return "";
//}
//
//}
